/*
 * visual.h
 *
 *  Created on: Nov 28, 2010
 *      Author: cumeo89
 */

#ifndef VISUAL_H_
#define VISUAL_H_

#include "suffixtree.h"
#include <glib.h>

#define EDGE_LABEL_TYPE_INDEX 0
#define EDGE_LABEL_TYPE_SUBSTRING 1

/**
 * Dữ liệu cần truyền cho hàm visualize
 */
typedef struct {

	/**
	 * Lệnh gọi chương trình dot
	 */
	const gchar *dot;

	/**
	 * Cách biểu diễn nhãn của cạnh, chọn một trong hai giá trị
	 * EDGE_LABEL_TYPE_INDEX (nhãn cạnh là bộ chỉ số) hoặc
	 * EDGE_LABEL_TYPE_SUBSTRING (nhãn cạnh là chuỗi con).
	 */
	int edgeLabelType;

	/**
	 * Thư mục chứa các tệp ảnh
	 */
	gchar *dir;

	/**
	 * Bộ đếm để đặt tên các tệp ảnh
	 */
	int counter;

} VisualizerData;

void get_image_path(gchar *s, VisualizerData *data, int index);

/**
 * Hàm callback dùng để tạo ảnh của cây hậu tố. Gọi t_new_callback với con
 * trỏ hàm này và con trỏ đến VisualizerData và ảnh của cây trong quá trình
 * xây dựng sẽ được đặt trong thư mục <code>VisualizerData.dir</code>.
 * @see t_new_callback()
 */
void visualize(SuffixTree *tree, gpointer userData, glong i, glong j);

#endif /* VISUAL_H_ */
